

const fp = require('lodash/fp')
const {MayBe,Container} = require('./support')
/**
 *  question1 : 使用fp.add fp.map创建一个能让funtor里的值增加的函数
 */
// let maybe = MayBe.of([5,6,1])
// let ex1 = (number)=>{
//   const result =   maybe.map(x=>{
//         const t = fp.map(k=>{
//             return fp.add(k,number)
//         },x)
//         return t

//     })
//     return result
// }
// console.log(ex1(3))

/**
 *  question2 : 实现函数ex2,能够使fp.first获取列表的第一个元素
 */
// let xs = Container.of(['do','ray','ss','aa','ccc'])
// let ex2 = ()=>{
//     return xs.map(res=>{
//         return fp.first(res)
//     })
// }
// console.log(ex2()) // Container { _value: 'do' }


// 能够使fp.first获取列表的第一个元素?  fp.first(ex2)?

// let ex2 = ()=>{
//     return xs.map(res=>{
//         return res
//     })._value
// }
// console.log(fp.first(ex2())) // do

/**
 *  question3 : ex3
 */
// let  safeProp = fp.curry(function (x,o) {
//     return MayBe.of(o[x])
// })
// let user = {id:2,name:'Albert'}
// let ex3 = ()=>{
//     let result = safeProp('name',user)._value
//     return fp.first(result)
// }
// console.log(ex3()) // A

/**
 *  question4: 用MayBe重写ex4
 */
// let ex4 = function (n) {
//     if(n){
//         return parseInt(n)
//     }
// }

// let refactor_ex4 = (n)=>{
//     return MayBe.of(n)._value
// }

// console.log(refactor_ex4())